<?php

class Application_Model_Auth extends App_Model_Abstract
{
    public static function login($login, $senha)
    {
        $dbAdapter = Zend_Db_Table::getDefaultAdapter();
        //Inicia o adaptador Zend_Auth para banco de dados
        $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
        $authAdapter->setTableName('usuario')
                    ->setIdentityColumn('email')
                    ->setCredentialColumn('senha')
                    ->setCredentialTreatment('SHA1(?)');
        //Define os dados para processar o login
        $authAdapter->setIdentity($login)
                    ->setCredential($senha);
        //Faz inner join dos dados do perfil no SELECT do Auth_Adapter
        //$select = $authAdapter->getDbSelect();
        //$select->join( array('u' => 'usuario'), 'u.id_usuario = usuario_login.id_usuario', array( 'nome'=> 'CONCAT(u.nome," ",u.sobrenome )' , 'u.tipo') );
        //Efetua o login
        $auth = Zend_Auth::getInstance();
        $result = $auth->authenticate($authAdapter);
        //Verifica se o login foi efetuado com sucesso
        if ( $result->isValid() ) {
            //Recupera o objeto do usuario, sem a senha
            $info = $authAdapter->getResultRowObject(null, 'senha');
            $Usuario = new Application_Model_Usuario();
            $Usuario->setId($info->id);
            $Usuario->setNome( $info->nome );
            $Usuario->setEmail($info->email);
            $Usuario->setTipo($info->tipo);
            $Usuario->setPrimeiroNome(self::trataPrimeiroNome($info->nome));
            $Usuario->setPrimeiraLetra(self::primeiraLetra($info->nome ));
            switch ($info->tipo){
            	case '0':
        		    $Usuario->setRoleId("admin");
 		 		break;
 		 		case '1':
 		 			$Usuario->setRoleId("user");
 		 		break;
 		 		case '2':
 		 			$Usuario->setRoleId("user");
 		 			break;
 		 		default:
 		 			$Usuario->setRoleId("guest");
 		 			break;		
            }
            $storage = $auth->getStorage();
            $storage->write($Usuario);
            $authNamespace = new Zend_Session_Namespace('Zend_Auth');
            $authNamespace->user = $Usuario;
            return true;
        }
        throw new Exception('<div id="erroLogin">Nome de usuário ou senha inválida</div>');
    }
    
    public static function trataPrimeiroNome($nome){
    	list($fname, $lname) = explode(' ', $nome,2);
		return $fname;
	}
	public  function primeiraLetra($nome){
		return  strtoupper(substr($nome, 0,1));
	}
}

